#pragma once

namespace SimpleGUI
{
	public ref class tag_info
	{
		// Constructor and Destructor
			public: tag_info(unsigned int i, unsigned int w);
			protected: virtual ~tag_info();
		// Member Variables and their Accessor Functions
			// linear_index
				private: unsigned int linear_index;
				public: unsigned int get_linear_index();
				protected: void put_linear_index(unsigned int i, unsigned int w);
				protected: void put_cartesian_index(unsigned int r, unsigned int c);
			// wrap_around
				private: unsigned int wrap_around;
				public: unsigned int get_wrap_around();
			// row_index
				private: unsigned int row_index;
				public: unsigned int get_row_index();
			// column_index
				private: unsigned int column_index;
				public: unsigned int get_column_index();
		// Worker Functions
			protected: virtual void calc_cartesian_index();
			protected: virtual void calc_linear_index();
	};
}
